
Private Sub SuperDeconvolution(ByVal FirstBin As Int32, _
                                    ByVal LastBin As Int32, _
                                    ByVal ArraySource() As Single, _
                                    ByRef ArrayDest() As Single, _
                                    ByRef MaxBinValue As Single, _
                                    ByRef BinWithMaxValue As Int32)

 	    '' ---------------------------------------------------------------------
            ''  SUPER DE-CONVOLUTION - First and second energy from isotope list
            ''----------------------------------------------------------------------
            Dim FirstIsotopeEnergy As Single = 0
            Dim SecondIsotopeEnergy As Single = 0
            For i As Int32 = 0 To SelectedIsotopes.Length - 1
                If FirstIsotopeEnergy = 0 Then
                    FirstIsotopeEnergy = SelectedIsotopes(i).Energy
                Else
                    SecondIsotopeEnergy = SelectedIsotopes(i).Energy
                    Exit For
                End If
            Next


  	    '' ---------------------------------------------------------------------
            ''  SUPER DE-CONVOLUTION - TYPE 1
            ''----------------------------------------------------------------------
            'Dim Ni As Single
            'Dim Ei As Single
            'Dim Nai As Single
            'Dim Nbi As Single
            'Dim Na As Single = 0
            'Dim Nb As Single = 0
            'Dim Nt As Single = 0

            'Dim Ea As Single = FirstIsotopeEnergy '135 ' KeV
            'Dim Eb As Single = SecondIsotopeEnergy '156 ' KeV
            'Dim sigma As Single = mDeconvSize + 0.5F ' KeV
            'Dim Q As Single = CSng(Math.Sqrt(2.0 * Math.PI * sigma ^ 2.0))

            ''Dim binLow As Int32 = EnergyToBin(Ea - 3 * sigma)
            ''Dim binHi As Int32 = EnergyToBin(Eb + 3 * sigma)
            ''If binLow < 0 Then binLow = 0
            ''If binHi > MAX_BIN_INDEX Then binHi = MAX_BIN_INDEX
            'Dim binLow As Int32 = FirstBin
            'Dim binhi As Int32 = LastBin

            'For i As Int32 = binLow To binhi
            '    Nt += ArrayDest(i)
            'Next

            'For i As Int32 = binLow To binhi
            '    Ni = ArrayDest(i)
            '    Ei = BinToEnergy(i)
            '    Dim expa As Single = CSng(Math.Exp((-(Ei - Ea) ^ 2) / (2 * sigma ^ 2)))
            '    Dim expb As Single = CSng(Math.Exp((-(Ei - Eb) ^ 2) / (2 * sigma ^ 2)))
            '    If expa > 0 And expb > 0 And Not Single.IsInfinity(expaa) And Not Single.IsInfinity(expbb) Then
            '        Nai = (Ni - Nt * expb / Q) / (1 - expb / expa)
            '        Nbi = (Ni - Nt * expa / Q) / (1 - expa / expb)
            '        Na += Nai
            '        Nb += Nbi
            '    Else
            '        Nai = 0
            '        Nbi = 0
            '    End If
            '    'ArrayDest(i) = Nai
            '    'ArrayDest(i) = Nai + Nbi * 0.8F
            'Next

            '' -------------------------------------------------- coniglio(rabbit) extension 
            'Dim sigmac As Single = mGaussianSize + 0.5F ' KeV
            'Dim Nac As Single
            'Dim Nbc As Single
            'Dim Qc As Single = CSng(Math.Sqrt(2.0 * Math.PI * sigmac ^ 2.0))

            'For i As Int32 = binLow To binhi
            '    Ei = BinToEnergy(i)
            '    Dim expa As Single = CSng(Math.Exp((-(Ei - Ea) ^ 2) / (2 * sigmac ^ 2)))
            '    Dim expb As Single = CSng(Math.Exp((-(Ei - Eb) ^ 2) / (2 * sigmac ^ 2)))
            '    Nac = Na / Qc * expa
            '    Nbc = Nb / Qc * expb
            '    ArrayDest(i) = Nac + Nbc
            'Next


            ' ---------------------------------------------------------------------
            '  SUPER DE-CONVOLUTION - TYPE 2
            ' ---------------------------------------------------------------------
            'Dim Ni As Single
            'Dim Ei As Single
            'Dim Nai As Single
            'Dim Nbi As Single
            'Dim Na As Single = 0
            'Dim Nb As Single = 0

            'Dim Ea As Single = FirstIsotopeEnergy '135 ' KeV
            'Dim Eb As Single = SecondIsotopeEnergy '156 ' KeV
            'Dim sigma As Single = mDeconvSize + 0.5F ' KeV
            'Dim Q As Single = CSng(Math.Sqrt(2.0 * Math.PI * sigma ^ 2.0))
            'Dim Em As Single = (Ea + Eb) / 2 'KeV
            'Dim Nm As Single = ArrayDest(EnergyToBin(Em))

            ''Dim binLow As Int32 = EnergyToBin(Ea - 3 * sigma)
            ''Dim binHi As Int32 = EnergyToBin(Eb + 3 * sigma)
            ''If binLow < 0 Then binLow = 0
            ''If binHi > MAX_BIN_INDEX Then binHi = MAX_BIN_INDEX
            'Dim binLow As Int32 = FirstBin
            'Dim binhi As Int32 = LastBin

            ''For i As Int32 = binLow To binhi
            ''    Ni = ArrayDest(i)
            ''    Ei = BinToEnergy(i)
            ''    Dim expaa As Single = CSng(Math.Exp(((Em - Ea) ^ 2 - (Ei - Ea) ^ 2) / (2 * sigma ^ 2)))
            ''    Dim expbb As Single = CSng(Math.Exp(((Em - Eb) ^ 2 - (Ei - Eb) ^ 2) / (2 * sigma ^ 2)))
            ''    If expaa > 0 And expbb > 0 And Not Single.IsInfinity(expaa) And Not Single.IsInfinity(expbb) Then
            ''        Nai = (Ni - Nm * expbb) / (1 - expbb / expaa)
            ''        Nbi = (Ni - Nm * expaa) / (1 - expaa / expbb)
            ''        Na += Nai
            ''        Nb += Nbi
            ''    Else
            ''        Nai = 0
            ''        Nbi = 0
            ''    End If
            ''    ArrayDest(i) = Nai
            ''    'ArrayDest(i) = Nai + Nbi
            ''Next

            '' -------------------------------------------------- coniglio(rabbit) extension 
            'Dim Nac As Single
            'Dim Nbc As Single
            'Dim sigmac As Single = mGaussianSize + 0.5F ' KeV
            'Dim Qc As Single = CSng(Math.Sqrt(2.0 * Math.PI * sigmac ^ 2.0))

            'For i As Int32 = binLow To binhi
            '    Ei = BinToEnergy(i)
            '    Dim expa As Single = CSng(Math.Exp((-(Ei - Ea) ^ 2) / (2 * sigmac ^ 2)))
            '    Dim expb As Single = CSng(Math.Exp((-(Ei - Eb) ^ 2) / (2 * sigmac ^ 2)))
            '    Nac = Na / Qc * expa
            '    Nbc = Nb / Qc * expb
            '    ArrayDest(i) = Nac + Nbc
            'Next

 
   End Sub